package com.idp.common.model;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * JSON返回对象
 * @author wjw
 * @time 2016年1月7日下午4:58:05
 */
public class Response implements Serializable {

	private static final long serialVersionUID = -2941004975419422778L;

	protected int errcode;
	protected String msg = "操作成功";
	protected Object data;// 其他信息
	public Map<String,Object> result;// 其他参数
	
	public Response(){
		this.errcode = 0;
		this.result = new HashMap<String,Object>();
	}
	
	public Response(int errcode){
		this();
		this.errcode = errcode;
	}
	
	public Response(int errcode,String msg){
		this();
		this.errcode = errcode;
		this.msg = msg;
	}
	
	
	public void setErrcode(int errcode) {
		this.errcode = errcode;
	}
	public Integer getErrcode() {
		return errcode;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public Map<String, Object> getResult() {
		return result;
	}
	public void setResult(Map<String, Object> result) {
		this.result = result;
	}
	public Object getData() {
		return data;
	}
	public void setData(Object data) {
		this.data = data;
	}

	/** 增加属性值（链式调用） */
	public Response put(String key, Object value) {
		this.result.put(key, value);
		return this;
	}

	public static void main(String[] args) {
		Response r = new Response();
		/** 
	     * ObjectMapper是JSON操作的核心，Jackson的所有JSON操作都是在ObjectMapper中实现。 
	     * ObjectMapper有多个JSON序列化的方法，可以把JSON字符串保存File、OutputStream等不同的介质中。 
	     * writeValue(File arg0, Object arg1)把arg1转成json序列，并保存到arg0文件中。 
	     * writeValue(OutputStream arg0, Object arg1)把arg1转成json序列，并保存到arg0输出流中。 
	     * writeValueAsBytes(Object arg0)把arg0转成json序列，并把结果输出成字节数组。 
	     * writeValueAsString(Object arg0)把arg0转成json序列，并把结果输出成字符串。 
	     */
		ObjectMapper mapper = new ObjectMapper();
		try {
			String jsonString = mapper.writeValueAsString(r);
			System.out.println(jsonString); 
		} catch (JsonProcessingException e) {
			e.printStackTrace();
		} 
	}
}
